import pandas as pd

def get_ranking_data_optimized(df, year=None):
    """
    获取年度排名数据（优化版）
    参数: df - 预加载的销售数据DataFrame
    """
    try:
        # 如果没有指定年份，使用最新年份
        if year is None:
            year = df['年份'].max()
        
        # 筛选指定年份的数据
        year_data = df[df['年份'] == year]
        
        if year_data.empty:
            return {
                'success': False,
                'error': f'没有找到{year}年的数据'
            }
        
        # 按厂商分组计算年度总销量
        manufacturer_sales = year_data.groupby('厂商')['销量'].sum().reset_index()
        
        # 按销量降序排序，取前10名
        top_manufacturers = manufacturer_sales.sort_values('销量', ascending=False).head(10)
        
        # 构建返回数据
        result = {
            'success': True,
            'data': {
                str(year): {
                    'manufacturers': top_manufacturers['厂商'].tolist(),
                    'sales': top_manufacturers['销量'].tolist()
                }
            }
        }
        
        return result
        
    except Exception as e:
        return {
            'success': False,
            'error': f'获取排名数据失败: {str(e)}'
        }